"if expressions always return a result"
舉個例子:
val max = if (x > y) x else y
因為if運算式是一個能有回傳值的運算式,所以我們可以寫成上面那樣。
這樣的寫法也可以讓我們盡量使用val而不是var
(Scala鼓勵我們使用val而不是var)
另外,如果要println(max)
,我們可以寫成這樣:
println(if (x > y) x else y)
一般來說,不建議使用while(while迴圈和var常常會一起出現),可以改用遞迴。
因為while迴圈沒有回傳值,如果要對程式產生任何效果會需要靠更新var變數來達成。
Scala的while迴圈跟其他語言差不多,這邊就不舉例了~
來介紹幾個Scala的for運算式的常見用法:
遍歷集合
for ( i <- 1 to 5) print(i + " ")
輸出結果:1 2 3 4 5
如果輸出不要包含上界,可以使用until
for ( i <- 1 until 5) print(i + " ")
輸出結果:1 2 3 4
過濾
有時不需要遍歷所有集合,這時候可以給for迴圈加一個過濾器:if
舉例,當只要列出當前目錄中那些結尾有".scala"的文件時:
val filesHere = (new java.io.File(".")).listFiles
for ( files <- filesHere if file.getName.endsWith(".scala"))
println(file)
如果需要更多過濾器就直接添加if子句
例如:
for ( file <- filesHere
if file.isFile
if file.getName.endsWith(".scala")
) println(file)
內建結構今天先講到這邊 明天繼續講!